#ifndef UI_H
#define UI_H

#include <QMainWindow>
#include <QtGui/QGridLayout>
#include <QtGui/QVBoxLayout>
#include <QtGui/QHBoxLayout>
#include <QtGui/QPushButton>
#include <QtGui/QLineEdit>
#include <QtGui/QFileDialog>
#include <QtGui/QIcon>
#include <QtGui/QLabel>
#include <QtGui/QStatusBar>
#include <QVTKWidget.h>
#include "model.h"

/*!
 \brief

*/
class Ui : public QMainWindow
{
    Q_OBJECT
public:
/*!
 \brief

 \param mod
*/
    Ui(model* mod);
    /*!
     \brief

    */
    ~Ui();

private slots:
    /*!
     \brief

    */
    void browseSource();
//    void browseTarget();
    /*!
     \brief

    */
    void showTarget();
    /*!
     \brief

    */
    void showSource();
    /*!
     \brief

    */
    void showRegistered();
    /*!
     \brief

    */
    void start();

private:
    /*!
     \brief

    */
    void setupCentralWidget();
    /*!
     \brief

     \param event
     \param cookie
    */
    static void pointPickCallback(const pcl::visualization::PointPickingEvent& event, void* cookie);

    model* _model; /*!< TODO */
//    QLineEdit* _loadTargetPath;
    QLineEdit* _loadSourcePath; /*!< TODO */
    QVTKWidget* _visualizerQVTKWidget; /*!< TODO */
    visualization::PCLVisualizer* _viewer; /*!< TODO */
    QLabel* _baseIconLabel; /*!< TODO */
    QLabel* _sideIconLabel; /*!< TODO */
    bool cameraIsCentered; /*!< TODO */
};

#endif // UI_H
